package com.jch.ft.util;

import com.jch.ft.domain.*;

// 传输消息构建工具类
public class MsgUtil {

    /**
     * 构建对象： 请求传输文件 - 客户端
     * @param fileUrl 客户端文件地址
     * @param fileName 文件名称
     * @param fileSize 文件大小
     * @return 传输协议对象
     */
    public static FileTransferProtocol buildRequestTransferFile(String fileUrl,String fileName,long fileSize){
        FileDescInfo fileDescInfo = new FileDescInfo();
        fileDescInfo.setFileUrl(fileUrl);
        fileDescInfo.setFileName(fileName);
        fileDescInfo.setFileSize(fileSize);

        FileTransferProtocol fileTransferProtocol = new FileTransferProtocol();
        fileTransferProtocol.setTransferType(Constants.TransferType.REQUEST_TRANSFER_FILE);
        fileTransferProtocol.setTransferObject(fileDescInfo);

        return fileTransferProtocol;
    }

    /**
     * 构建对象： 文件传输指令 - 服务端
     * @param status 指令状态 0：请求传输文件、1：文件传输指令、2：文件传输数据
     * @param clientUrl 客户端文件地址
     * @param readIndex 读取位置
     * @return 传输协议对象
     */
    public static FileTransferProtocol buildTransferInstruct(int status,String clientUrl,int readIndex){
        FileBurstInstruct instruct = new FileBurstInstruct();
        instruct.setStatus(status);
        instruct.setClientFileUrl(clientUrl);
        instruct.setReadIndex(readIndex);

        FileTransferProtocol protocol = new FileTransferProtocol();
        protocol.setTransferType(Constants.TransferType.FILE_TRANSFER_INSTRUCT);
        protocol.setTransferObject(instruct);

        return protocol;
    }

    /**
     * 构建对象： 文件传输指令 - 服务端
     * @param instruct 指令信息
     * @return 传输协议对象
     */
    public static FileTransferProtocol buildTransferInstruct(FileBurstInstruct instruct){
        FileTransferProtocol protocol = new FileTransferProtocol();
        protocol.setTransferType(Constants.TransferType.FILE_TRANSFER_INSTRUCT);
        protocol.setTransferObject(instruct);
        return protocol;
    }

    /**
     * 构建对象： 文件传输数据 - 客户端
     * @param fileBurstData 数据信息
     * @return 传输协议对象
     */
    public static FileTransferProtocol buildTransferData(FileBurstData fileBurstData){
        FileTransferProtocol protocol = new FileTransferProtocol();
        protocol.setTransferType(Constants.TransferType.FILE_TRANSFER_DATA);
        protocol.setTransferObject(fileBurstData);
        return protocol;
    }
}
